package mymyoux.events
{
	/**
	 * MAdvSocketEvent est envoyé par un MAdvSocket lors d'un évènement déclenché par un utilisateur d'un MServer ou par la connexion.
	 * @author Mymyoux
	 * @version 2.0
	 *
	 */
	public class MAdvSocketEvent extends MEvent
	{
		/**
		 * Evenement envoyé lors de la connexion d'un MAdvSocket.
		 */
		static public const CONNECT:String="connect"
		/**
		 * Evenement envoyé lors de la réception d'une donnée d'un MAdvSocket.
		 */
		static public const DATA:String="data";
		/**
		 * Evenement envoyé lors de la réception de la liste des personnes présentes dans un salon d'un MAdvSocket.
		 */
		static public const LIST:String="liste";
		/**
		 * Evenement envoyé lors de la connexion d'un joueur dans un salon d'un MAdvSocket.
		 */
		static public const NEW_CONNECTED:String="new_user";
		/**
		 * Evenement envoyé lors de la déconnexion d'un joueur dans un salon d'un MAdvSocket.
		 */
		static public const LOST_CONNECTED:String="lost_user";
		/**
		 * Evenement envoyé lors de la fermeture d'un salon d'un MAdvSocket.
		 */
		static public const ROOM_CLOSED:String="room_closed";
		/**
		 * Evenement envoyé lors d'une erreur provoquant la fermeture d'un MAdvSocket.
		 */
		static public const ERROR:String="error_closed";
		/**
		 * Evenement envoyé lors de la fermeture d'un MAdvSocket.
		 */
		static public const CLOSE:String="closed";
		/**
		 * Evenement envoyé lors d'identification sur le serveur à la réception de l'id.
		 */
		 static public const IDENTIFIED:String="identified";
		 /**
		 * Evenement envoyé lors de la réception d'informations d'un joueur.
		 */
		 static public const GET_INFO:String="get_info";
		/**
		 * @private
		 */
		protected var _id:uint;
		/**
		 * Crée un objet MAdvSocketEvent.
		 * @param type Type de l'évènement.
		 * @param value Valeur transmise à l'écouteur.
		 * @param id Identifiant de l'utilisateur ayant produit l'évènement. Vaut 0 si l'évènement n'est pas lié à un utilisateur spécifique.
		 * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false.
		 * @param cancelable Determines whether the Event object can be canceled. The default values is false.
		 */
		public function MAdvSocketEvent(type:String,value:String,id:uint=0,bubbles:Boolean=false,cancelable:Boolean=false)
		{
			_id=id;
			super(type,value,bubbles,cancelable);
		}
		public function set data(s:String):void{
			_value=s;
		}
		/**
		 * Contient une donnée transmettre à l'écouteur ou null.
		 */
		public function get data():String{
			return _value;
		}
		/**
		 * Contient l'identifiant de l'utilisateur déclencheur de l'évènement ou 0.
		 */
		public function get id():uint{
			return _id;
		}
		public function set value(s:String):void{
			_value=s;
		}
		/**
		 * @inheritDoc
		 */
		public override function toString():String{
			return "[MAdvSocketEvent type=\""+type+"\" value=\""+_value+"\" id=\""+_id+"\"]";
		}

	}
}